// 一副扑克牌一共54张牌
// 3个玩家，每人17张，底牌3张
// 54张牌：4个花色（♠、♥、♣、♦）；每个花色点数是：2、3、4、5、6、7、8、9、10、J、Q、K、A；大王、小王

// 获取随机数函数
function randomNumber(min, max) {
    return parseInt(Math.random() * (max - min + 1) + min);
}


// 思路：
// 1.组合牌：点数和花色组合，在加大小王
// 2.洗牌：打乱所有牌的原有顺序
// 3.发牌：3个玩家，每人17张，底牌3张
// 4.排序：需要对每个玩家的牌进行排序
function list(player) {
    player.sort(function (a, b) {
        return a.id - b.id;
    });
    return player;
}

// 5.输出:渲染到页面中
// 方法一：
// arr:表示存放玩家牌的数组
// playerNum：表示第几个玩家
// function print(arr, playerNum) {
//     let cardBox = document.getElementsByClassName("cardBox")[playerNum - 1];
//     let list = document.createDocumentFragment(); //创建文档碎片
//     for (let i = 0; i < arr.length; i++) {
//         // // 1.创建元素节点
//         let card = document.createElement("div");
//         card.classList.add("card");
//         if (arr[i].type == "♠") {
//             card.classList.add("Spades");
//         }else if(arr[i].type == "♥"){
//             card.classList.add("hearts");
//         }else if(arr[i].type=="♣"){
//             card.classList.add("Plum");
//         }else if(arr[i].type=="♦"){
//             card.classList.add("Square");
//         }
//         let leftTop=document.createElement("div");
//         leftTop.className="leftTop";
//         let p1=document.createElement("p");
//         p1.className="num";
//         let text1=document.createTextNode(arr[i].num);
//         p1.appendChild(text1);
//         let p2=document.createElement("p");
//         p2.className="type";
//         let text2=document.createTextNode(arr[i].type);
//         p2.appendChild(text2);
//         leftTop.appendChild(p1);
//         leftTop.appendChild(p2);

//         let rightBottom=leftTop.cloneNode(true);
//         rightBottom.className="rightBottom";
//         card.appendChild(leftTop);
//         card.appendChild(rightBottom);
//         // // 4.把新增的节点插入到文档碎片中
//         list.appendChild(card);
//         // 注意：每一次执行appendChild方法向页面中插入元素，就会刷新一次页面
//     }

//     cardBox.appendChild(list); //把文档碎片里面的内容一次性插入到页面中，页面就只会刷新一次

// }

// 方法二：
function print(arr, playerNum) {
    let cardBox = document.getElementsByClassName("cardBox")[playerNum - 1];
    let cardType;
    for (let i = 0; i < arr.length; i++) {
        if (arr[i].type == "♠") {
            cardType="Spades";
        } else if (arr[i].type == "♥") {
            cardType="hearts";
        } else if (arr[i].type == "♣") {
            cardType="Plum";
        } else if (arr[i].type == "♦") {
            cardType="Square";
        }
        cardBox.innerHTML += `
        <div class="card ${cardType}">
                <div class="leftTop">
                    <p class="num">${arr[i].num}</p>
                    <p class="type">${arr[i].type}</p>
                </div>
                <div class="rightBottom">
                    <p class="num">${arr[i].num}</p>
                    <p class="type">${arr[i].type}</p>
                </div>
        </div>
        `
    }
}

function main() {
    // 1.组合牌：点数和花色组合，在加大小王
    // 所有的牌放在数组,每一张牌是一个对象
    // {
    //     id:1,//用于排序
    //     type:"♠",
    //     num:3
    // }
    let cardsArr = [];
    let typeArr = ["♠", "♥", "♣", "♦"]; //花色数组
    let numArr = [2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A"]; //点数数组
    let id = 1; //记录牌的顺序，方便后续排序
    for (let i = 0; i < numArr.length; i++) {
        for (let j = 0; j < typeArr.length; j++) {
            let obj = {
                id: id++,
                type: typeArr[j],
                num: numArr[i]
            }
            cardsArr.push(obj);
        }
    }
    // 单独添加大小王
    cardsArr.push({
        id: 53,
        type: "",
        num: "小王"
    });
    cardsArr.push({
        id: 54,
        type: "",
        num: "大王"
    });
    // 2.洗牌：打乱所有牌的原有顺序
    for (let i = 0; i < cardsArr.length; i++) {
        // 随机获取一个数组下标，和当前遍历到的下标所对应的值进行交换
        // 25    0
        // i=1  34
        let x = randomNumber(0, cardsArr.length - 1); //获取0-53之间的随机下标
        [cardsArr[i], cardsArr[x]] = [cardsArr[x], cardsArr[i]];
    }

    // 3.发牌：3个玩家，每人17张，底牌3张
    // let player1=cardsArr.slice(0,17);
    // let player2=cardsArr.slice(17,34);
    // let player3=cardsArr.slice(34,51);
    // let player4=cardsArr.slice(51);
    let player1 = [];
    let player2 = [];
    let player3 = [];
    let player4 = [];
    for (let i = 0; i < 6; i++) {
        if (i == 0) {
            player1.push(...cardsArr.splice(0, 2));
            player2.push(...cardsArr.splice(0, 2));
            player3.push(...cardsArr.splice(0, 2));
        } else {
            player1.push(...cardsArr.splice(0, 3));
            player2.push(...cardsArr.splice(0, 3));
            player3.push(...cardsArr.splice(0, 3));
        }

    }
    player4 = cardsArr;

    // console.log(player1)
    // console.log(player2)
    // console.log(player3)
    // console.log(player4)


    // 4.排序：需要对每个玩家的牌进行排序
    player1 = list(player1);
    player2 = list(player2);
    player3 = list(player3);
    player4 = list(player4);

    // 5.输出
    // console.log("玩家1：", print(player1));
    // console.log("玩家2：", print(player2));
    // console.log("玩家3：", print(player3));
    // console.log("底牌：", print(player4));
    print(player1, 1);
    print(player2, 2);
    print(player3, 3);
    print(player4, 4);
}
main();